js兰伯特和经纬度转换(提取自proj4js) |
您所在的位置:网站首页 › python 经纬度转utm › js兰伯特和经纬度转换(提取自proj4js) |
//初始化常用的变量,直接换算成弧度,提升计算性能var EPSLN = (typeof Number.EPSILON === 'undefined') ? 1.0e-10 : Number.EPSILON; var conv = 180 / Math.PI; var HALF_PI = Math.PI / 2; var SPI = 3.14159265359; var TWO_PI = 2 * Math.PI; var a = 6378137;var b = 6356752.314245179; var e = 0.08181919084262157; var lat1 = 0.52359877559829; var lat2 = 1.04719755119659; var long0 = 1.8029251173101; var lat0 = 0; var k0 = 1; var ns; var f0; var rh; //常用的转换参数,直接提取引用 var tsfnz = function(eccent, phi, sinphi) { var con = eccent * sinphi; var com = 0.5 * eccent; con = Math.pow(((1 - con) / (1 + con)), com); return(Math.tan(0.5 * (HALF_PI - phi)) / con); }; var sign = function(x) { return x < 0 ? -1 : 1; }; var msfnz = function(eccent, sinphi, cosphi) { var con = eccent * sinphi; return cosphi / (Math.sqrt(1 - con * con)); }; var adjust_lon = function(x) { return(Math.abs(x) EPSLN) { ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2); } else { ns = sin1; } if(isNaN(ns)) { ns = sin1; } f0 = ms1 / (ns * Math.pow(ts1, ns));rh = a * f0 * Math.pow(ts0, ns);} //经纬度坐标转兰伯特坐标 function projCood(lon, lat) { lon = lon / conv;lat = lat / conv; if(Math.abs(2 * Math.abs(lat) - Math.PI) EPSLN) { ts = tsfnz(e, lat, Math.sin(lat)); rh1 = a * f0 * Math.pow(ts, ns); } else { con = lat * ns; if(con 0) { rh1 = Math.sqrt(x * x + y * y);con = 1; } else { rh1 = -Math.sqrt(x * x + y * y);con = -1; } var theta = 0; if(rh1 !== 0) { theta = Math.atan2((con * x), (con * y)); } if((rh1 !== 0) || (ns > 0)) {con = 1 / ns;ts = Math.pow((rh1 / (a * f0)), con);lat = phi2z(e, ts);if(lat === -9999) {return null;}} else {lat = -HALF_PI;}lon = adjust_lon(theta / ns + long0);return [lon * conv, conv * lat];} |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |